home *** CD-ROM | disk | FTP | other *** search
/ Trusted Irix /B 4.0.4 / Trusted-Irix B-4.0.1.iso / dist / eoe1.idb / usr / include / sys / eag.h.z / eag.h
C/C++ Source or Header  |  1992-04-03  |  3KB  |  111 lines

  1. /**************************************************************************
  2.  *                                      *
  3.  *          Copyright (C) 1989, Silicon Graphics, Inc.          *
  4.  *                                      *
  5.  *  These coded instructions, statements, and computer programs  contain  *
  6.  *  unpublished  proprietary  information of Silicon Graphics, Inc., and  *
  7.  *  are protected by Federal copyright law.  They  may  not be disclosed  *
  8.  *  to  third  parties  or copied or duplicated in any form, in whole or  *
  9.  *  in part, without the prior written consent of Silicon Graphics, Inc.  *
  10.  *                                      *
  11.  **************************************************************************/
  12.  
  13. #ifndef __SYS_EAG_H__
  14. #define __SYS_EAG_H__
  15. #ident    "$Revision: 1.8 $"
  16.  
  17. /*
  18.  * Data types for Extended Attributes (plan G).
  19.  *
  20.  */
  21.  
  22. #ifdef    TRUSTEDIRIX
  23. #include <sys/mac_label.h>
  24.  
  25. /*
  26.  * mandatory access control (mac):
  27.  *    Two files:
  28.  *        EAG_MAC_INDEX - index and size of an entry in ...
  29.  *        EAG_MAC_LABEL - the label itself.
  30.  */
  31. #define    EAG_MAC_INDEX    "attribute/mac_index"
  32. #define    EAG_MAC_LABEL    "attribute/mac_label"
  33. /*
  34.  * If EAG_MAC_DIRECT the label is stored in the index
  35.  * entry rather than the label file.
  36.  */
  37. #define EAG_MAC_DIRECT    0x00000001    /* Direct entry */
  38. /*
  39.  * The maximum size of data to put into a direct index file entry.
  40.  * Use as much as possible, but leave the flags alone.
  41.  */
  42. #define EAG_MAC_DIRECT_MAX    (sizeof (int) + sizeof (int))
  43. /*
  44.  * Special values for the i_plang field of inode.h
  45.  */
  46. #define EAG_REREAD    -1    /* do not trust this value - do reread */
  47. #define EAG_NOREREAD    -2    /* trust this value - do no reread */
  48.  
  49. /*
  50.  * Structure of an entry in the EAG_MAC_INDEX file.
  51.  */
  52. struct eag_mac_index_s {
  53.     unsigned int    emi_index;    /* Index of label in the label file */
  54.     unsigned int    emi_size;    /* Size of label, in bytes */
  55.     unsigned int    emi_flags;    /* Flags reguarding this entry */
  56. };
  57. typedef struct eag_mac_index_s eag_mac_index_t;
  58.  
  59. /*
  60.  * Structure of the in-core index to label pointer mapping.
  61.  */
  62. struct eag_mac_incore_s {
  63.     struct eag_mac_incore_s    *emc_next;    /* Next in this list */
  64.     mac_label        *emc_label;    /* Pointer to label table */
  65.     unsigned int        emc_index;    /* Index in the label file */
  66. };
  67. typedef struct eag_mac_incore_s eag_mac_incore_t;
  68.  
  69. /*
  70.  * Data to add to the mount table. Includes the inode pointers for
  71.  * EAG_MAC_INDEX and RAG_MAC_LABEL and the in-core index-label list.
  72.  */
  73. struct eag_mac_mount_s {
  74.     struct inode        *emm_index;    /* inode->data map file */
  75.     struct inode        *emm_label;    /* label data file */
  76.     eag_mac_incore_t    *emm_list;    /* in-core mapping */
  77.     mac_label        *emm_noplang;    /* label to use if not plang */
  78.     mac_label        *emm_ipmac;    /* label to use for NFS */
  79. };
  80. typedef struct eag_mac_mount_s eag_mac_mount_t;
  81.  
  82. /*
  83.  * Structure for syssgi(SGI_PLANGMOUNT)'s first parameter.
  84.  * It's really the mount arguments stuffed into a structure.
  85.  */
  86. struct eag_plangmount_s {
  87.     char    *epm_fspec;
  88.     char    *epm_freg;
  89.     int    epm_flags;
  90.     int    epm_fstyp;
  91.     char    *epm_dataptr;
  92.     int    epm_datalen;
  93. };
  94. typedef struct eag_plangmount_s eag_plangmount_t;
  95.  
  96. /* function prototypes */
  97.  
  98. #ifdef _KERNEL
  99. extern struct inode *eag_init( char *, struct inode * );
  100. extern void eag_close( struct inode * );
  101. extern void eag_mac_init( struct mount * );
  102. extern void eag_mac_get( struct inode * );
  103. extern int eag_mac_set( struct inode * );
  104. extern int eag_mac_set( struct inode * );
  105. extern int eag_mld_name( struct inode *, mac_label *, char *);
  106. #endif /* _KERNEL */
  107.  
  108. #endif    /* TRUSTEDIRIX */
  109.  
  110. #endif /* __SYS_EAG_H__ */
  111.